%===============================================================
% Fundamentos Teoricos
%===============================================================
\chapter{Fundamentos Teóricos}
\section{Realidade Aumentada}

A Realidade Aumentada, chamada também de RA, consiste na mistura entre o ambiente virtual com o ambiente real, onde objetos virtualizados se sobrepõem ao mundo real, proporcionando a visualização de imagens digitalizadas de maneira bastante realista. Com a RA, um usuário pode interagir com os objetos virtualizados, criados no computador, sem que precise de treinamentos intensivos para que essa interação aconteça [TOLEDO, 2010].
	A Realidade Aumentada está dentro de um contexto mais abrangente, conceituada através da composição do ambiente que será utilizada a técnica. Esse contexto é denominado de Realidade Misturada, que é definida pelo arranjo entre o ambiente virtual com o real, que é denominado de duas formas: se o ambiente principal utilizado para a interação é o real, a técnica é denominada de Realidade Aumentada; porém, se ambiente principal a ser utilizado for o virtual, denomina-se à técnica como Virtualidade Aumentada (VA) [MECATE, et. al., 2011].
	A Realidade Aumentada pode ser aplicada através de um computador, utilizando algumas técnicas de desenvolvimento, para que se concretize a interação entre o ambiente real em que o usuário está inserido e o ambiente virtual criado no computador, em tempo real. Através de um webcam instalado no computador, pode-se capturar a imagem real desejada, com o uso de visão computacional, projetando a imagem virtual sobre o ambiente real. Com essa forma de utilizar RA, o processamento das imagens será gerenciado pelo software que irá posicionar a imagem virtual exatamente no local esperado pelo usuário, dando assim, a impressão de que o objeto virtual esteja inserido no mundo real.
	A Realidade Aumentada possui eficácia em seu uso, por conseguir, através de recursos externos, programados para posicionar as imagens em locais que se aproximam de exatos locais que estariam posicionados, se existissem no mundo real. Tais recursos são obtidos através de visão computacional, computação gráfica, e outros recursos utilizados que podem ser utilizados nos computadores e em aparelhos móveis que utilizam a webcam e câmera digital, respectivamente, e funções como GPS.
	No computador, podem-se usar formas que posicionem o objeto digitalizado em marcadores, onde são conceituados como desenhos geométricos, que são preenchidos com uma única escala de cor, que facilita a junção desse objeto virtual com o marcador, impresso em papel, no ambiente real. Na Figura 1, se destaca como um objeto virtual é introduzido ao meio real, através de uma câmera, ou webcam, no caso de um computador pessoal.

%Figura 1

Figura 1\footnote{Disponível em: http://3.bp.blogspot.com/_Jz1Wo38NOCc/SrgR-WaTNRI/AAAAAAAAACs/_43nn2gXWS8/s320/www.vamoss.com.br.jpg} Através de uma câmera, que capta a imagem real a transfere para o computador, o objeto virtual é posicionado sobre o símbolo, que se caracteriza por um marcador que serve de base para que cada ponto do mesmo possa servir de referência para que cada ponto da imagem virtual seja posicionado nos locais marcados para os mesmos, no marcador. Na Figura 2 tem-se um exemplo de marcador usado para essa atividade.

%Figura 2

Figura 2\footnote{Disponível em: http://2.bp.blogspot.com/_Jz1Wo38NOCc/SrgR1GC_6RI/AAAAAAAAACk/-VhM9xpTDwU/s320/technologyinmind.jpg} : Exemplo de um marcador usado para desenvolvimento de RA. Cada ponto com a cor preta é usado para que cada pixel da imagem digitalizada possa ser posicionado sobre os pontos, em tempo real, dando a impressão, a partir de cada movimento da imagem real, que o objeto virtual esteja interagindo fisicamente com o objeto real.
	Para desenvolver aplicações no ramo da Realidade Aumentada, é necessário o uso de frameworks e bibliotecas. Alguns deles que podem ser citados são o ARToolKit, o JARToolKit, com o Java como código-fonte padrão, e os outros frameworks que serão citados nos próximos capítulos desse trabalho. Essas ferramentas oferecem métodos que auxiliam na manipulação de dados de vídeo e a renderização desses dados, em tempo real de execução [GROHS & MAESTRI, 2002].
	Os frameworks disponibilizam métodos que empregam técnicas de visão computacional que detectam e posicionam a imagem nos pontos dos marcadores, capturadas pela câmera. Essas ferramentas requerem que o desenvolvedor faça diversos testes, projetando as imagens sobre os marcadores, para que se definam com precisão as coordenadas espaciais, a orientação dos objetos virtuais, e identificar a sensibilidade presente nos movimentos feitos pelo usuário que implicarão em alterações nas informações de posicionamento do objeto [TOLEDO, 2010].
	Ainda há outras formas de interação do mundo real com o objeto virtualizado, que capacitam o usuário a se tornar um novo elemento na interação, podendo este, realizar movimentos com os marcadores, dando a impressão de que o objeto virtual estivesse preso ao usuário. Um exemplo a ser dado, consiste em o usuário fixar um marcador em uma de suas mãos, e projetar, a partir do software de RA, renderizando essa imagem para um aspecto de profundidade, em três dimensões, passando a ideia de esse usuário estar “segurando” o objeto e o manipulando a cada movimento real, acompanhado com um movimento virtual do objeto virtual sobre o marcador.
	O uso de marcadores para realização de uma interação de RA é bastante eficaz, porém limitado. Isso porque para projeção dos objetos virtuais, devem-se conter os marcadores visíveis à câmera, para que ela possa reconhecer o marcador como um campo de posicionamento, para dessa forma, projetar o objeto [AFFONSO & OLIVEIRA, 2006].
	Para resolução dessas limitações, se faz o uso de recursos de posicionamento através de coordenadas geográficas, como o GPS, que identifica a posição do objeto e o posiciona na tela de um dispositivo que contenha o GPS como recurso, de acordo com sua posição geográfica, como um dispositivo móvel como um smartphone, por exemplo. Com tal recurso, mantém o usuário livre do uso de marcadores, pois a partir de qualquer movimento realizado com a câmera, não terá preocupação com certas falhas de reconhecimento dos marcadores, vindas de inclinações feitas com o marcador em relação à câmera, trazendo mais liberdade nos movimentos e eficácia na projeção dos objetos virtuais.

\section{Android}

O Android foi o primeiro sistema operacional de plataforma aberta para desenvolvimento de aplicações para dispositivos móveis com o potencial de conseguir ingressar significativamente nos principais mercados do setor de telefonia móvel no mundo. Foi um produto comprado pela uma das maiores empresas de tecnologia do mundo, a Google, da empresa Open Hanset Allience. Em alguns anos o Android será o sistema que estará na maior parte de todos os smartphones no mundo, estando à frente do sistema operacional Windows Phone, da Microsoft, e o iOS da Apple. Atualmente, existem muitos sistemas para os aparelhos móveis no mundo, como iOS, citado anteriormente, o Symbian\footnote{© 2012 Nokia. Todos os direitos reservados.}, BlackBerry\footnote{© 2012 Research in Motion (RIM). Todos os direitos reservados.}  entre outros [Hello, Android, 2008].
Mesmo com diversas opções no mercado, o Android foi uma das plataformas que mais se destacou, por sua robustez, e porque combina diversas características que chamaram a atenção dos consumidores e desenvolvedores. Seu código aberto, baseado em Linux, onde isso deixa os desenvolvedores livres para criar qualquer tipo de aplicação sem precisarem pagar royalties\footnote{Disponível em: http://www.senado.gov.br/noticias/agencia/infos/inforoyalties_.htm} – cobrança da patente de um determinado produto, para permitir seu uso ou comercialização – para qualquer alteração; sua arquitetura que se baseia em mashup – como sendo parte de uma aplicação que pode ser utilizada em outra aplicação que estiver sendo desenvolvida, desencadeando novas formas de desenvolvimento e usabilidade, disseminando assim, a criatividade de diversos programadores, em cima de uma mesma aplicação; a disponibilidade de diversos serviços, oferecidos pela Google, como GPS, p.e., faz com que seja uma plataforma muito útil e eficaz, trazendo mais facilidade para conclusão das atividades diárias e o desenvolvimento de aplicações, por parte dos desenvolvedores.
A plataforma Android pode se melhor conceituar a partir da Figura 3, onde são associadas todas as camadas de componentes de software que compõem o Sistema.


%Figura 3


Figura 3\footnote{Fonte: http://www.techdesignforums.com/embedded/technique/android-beyond-the-handset/} Arquitetura do Sistema Operacional Android, composta por níveis de componentes de software.
Dos componentes mencionados na Figura 3, iremos utilizar as camadas de Aplicação (Applications), camada de Framework de Aplicação (Applications Framework), e as Bibliotecas de Desenvolvimento (Libraries). Na camada de Aplicação, utilizaremos os recursos do nível mais alto do sistema, recursos esses utilizados para ligações telefônicas, envio de mensagens de texto, entre outros. Além das funcionalidades mencionadas, utilizaremos as funções disponíveis no Kernel do Linux, como os drivers que mantém o funcionamento da câmera, da rede sem fio e da memória flash do dispositivo.
Na camada de Framework de Aplicações, as funcionalidades de alto nível são fornecidas para desenvolvimento das aplicações, as quais gerenciam recursos de hardware do aparelho, como sensores de movimento e câmera digital integrada; recursos de localização do aparelho, como o GPS; controle do clico de vida da aplicação; controle do encapsulamento de dados, para serem compartilhados com as aplicações instaladas no aparelho; e o controle dos eventos do sistema, através da apresentação de mensagens e notificações ao usuário.

\section{Ferramentas Auxiliares}

Nessa seção serão abordados os frameworks disponíveis, utilizados como base para desenvolvimento do projeto em questão. A princípio, será apresentado o aplicativo Look!, ferramenta essa em fase de testes, que atua como plataforma para implementação de aplicações no campo da Realidade Aumentada. 
	Será conceituada também a ferramenta Mixare, se trata de software criado com o objetivo de localizar pontos geográficos, através da câmera do dispositivo móvel, sendo esse também o objetivo do nosso projeto, integrando mapeamento de locais com o GPS do aparelho e Realidade Aumentada. Será uma aplicação de suma importância por ter disponível seu código-fonte, aberto e extensível. 
	Outra ferramenta que será apresentada é o Wikitude, com o mesmo objetivo do Mixare, porém com recursos mais intuitivos e que não se restringem apenas ao mapeamento de locais pré-cadastrados no sistema, como é no caso do Mixare.

\subsection{Look!}

O Look!\footnote{Fonte: http://www.lookar.net/presentacion/}  é um framework, criado na Espanha, para desenvolvimento de aplicações de Realidade Aumentada para o sistema operacional Android. A ferramenta, instalada em um aparelho móvel, possibilita o usuário visualizar como são implementadas, a interface e as operações disponíveis através do código-fonte oficial do projeto. Sua plataforma é livre, ou seja, possui seu código-fonte aberto para qualquer tipo de alteração e extensão do código por parte dos desenvolvedores. Ainda se encontra em fase de testes, e por isso possui poucos, mas importantes, meios de desenvolvimento.
A interface da aplicação podem ser criados em 2 ou 3 dimensões. As interações entre o usuário e o aparelho móvel, através do aplicativo, são feitas a partir da câmera do aparelho móvel, onde o usuário será envolvido, pela imagem da câmera, entre os objetos virtuais criados e o ambiente real que estiver presente.
	A aplicação possibilita o usuário interagir com os objetos virtuais, e ser localizado em determinados pontos, pelo GPS do aparelho, e em alguns casos, em que o uso do GPS não se torna tão preciso, novas implementações e tecnologias são utilizadas para esse tipo de implementação, como as redes Wi-Fi, e conexões 2G/3G, objetos e pessoas podem ser posicionados em ambientes internos, excluindo algumas restrições de uso, e possibilitando a criação de novos recursos que darão à aplicação, mais eficiência, usabilidade e estenderão as possibilidades de recursos a serem criados.
	O Look possibilita a integração com serviços remotos através da Web, para aplicações multiusuários, onde a persistência de dados será feita para que todos os usuários possam compartilhar e acessar dados compartilhados e comuns aos usuários. As informações obtidas pelo sistema são armazenadas, localmente, ou através de um servidor de armazenamento de dados, onde todos os clientes da aplicação poderão armazenar informações em servidor de dados, facilitando trocas de dados entre os clientes e o servidor [ALCARAZO, et. al., 2011].

\subsection{Mixare}

O Mixare\footnote{Fonte: http://www.mixare.org/}  é um aplicativo de Motor de Realidade Aumentada, de fonte livre e código-fonte aberto, e expansível, desenvolvido para criação de pontos específicos em um mapeamento de locais, utilizando a câmera e o GPS (Global Positioning System), projetando esses pontos, sob suas coordenadas, através da câmera do aparelho móvel, proporcionando maior interação entre o usuário. Pode ser modificado livremente, e codificado em uma nova aplicação, a partir de sua Licença Pública Geral (GNU\footnote{Mais informações em: http://www.gnu.org/licenses/gpl-3.0.html}).
	Sua base de dados por padrão é fornecida pela fonte de dados geográficos, mantida pela Wikipédia, e transforma essas informações obtidas, através da localização do usuário pelo GPS do aparelho móvel, em pontos geográficos projetados através da câmera do smartphone, utilizando Realidade Aumentada, como ilustrado na Figura 4\footnote{Disponível em: http://www.mixare.org/usage/}.

%Figura 4

Figura 4: Exemplo da troca de informações entre a base de dados geográfica e o Mixare, transmitindo essa troca em pontos localizados na tela do aparelho móvel. 
	O Mixare possibilita o desenvolvedor, caso queira salvar suas informações em seu próprio banco de dados, em um servidor local, ser acessado por um link externo, dentro de uma página HTML, que acessará as informações via Web, e transferirá ao aplicativo, trocando informações entre o Mixare e a fonte de dados geográficos armazenada no banco de dados local, transmitindo essas informações através da Realidade Aumentada, e projetará os dados obtidos pela câmera do aparelho móvel, como é mostrada na Figura 5.

%Figura 5

Figura 5\footnote{Fonte: http://www.mixare.org/usage/} Exemplo de como é feito o uso de uma página HTML para acessar os dados geográficos através de um link externo.
	O aplicativo pode também acessar dados geográficos a partir de uma aplicação própria, criada para fornecer dados de uma fonte criada pelo desenvolvedor, em tempo de execução do aplicativo. Com esse meio de acesso aos dados, o Mixare poderá ser acessado de um navegador Web instalado no sistema Android, como pode ser visualizado na Figura 6.

%Figura 6

Figura 6\footnote{Fonte: http://www.mixare.org/usage/} Exemplo do uso de um aplicativo independente que fornece os dados geográficos ao Mixare.

\subsection{Wikitude}

O Wikitude foi o primeiro aplicativo a ser criado para smartphones, e para a primeira versão lançada do sistema Android, utilizado como navegador de Realidade Aumentada, onde trouxe o acesso à bússola digital, ao GPS e ao acelerômetro, se tornando pioneira no desenvolvimento e utilização desses três componentes para realização de RA em dispositivos móveis. Iniciou a utilização e exigência de um hardware mais robusto que suprissem a demanda de recursos de localização geográfica nesses dispositivos.
	Através do Wikitude\footnote{Fonte: http://www.wikitude.com/wikitude-accelerates-multimedia-content-social-graph-augmented-reality}, pode-se identificar a localização de diversos locais no mundo, onde os mais visitados e conhecidos são descritos brevemente, e tais descrições são retirada da base de dados do aplicativo, a Wikipédia, como pode ser visto na Figura 7.

%Figura 7

Figura 7\footnote{Fonte: http://www.wikitude.com/tour/wikitude-world-browser/cam_1280x800_sanfran} Exemplo de como o Wikitude projeta as localizações geográficas reconhecidas de acordo com a posição do usuário, e como disponibiliza a ele uma breve descrição de um dos locais com maior importância, e que possua suas características armazenadas no banco de dados do site da Wikipedia.
Na Figura 7, um exemplo de como o Wikitude marca os locais projetados na tela do celular, utilizando Realidade Aumentada. A aplicação localiza o local, e o reconhece por suas coordenadas geográficas e seus atributos estarem cadastrados no banco de dados do aplicativo, e sinaliza na tela com do celular, sobreposta à imagem gerada pela câmera do aparelho, os locais, distâncias a serem percorridas para se chegar ao local sinalizado, sendo que os locais que possuem alguma descrição da Wikipédia são identificados com um ícone diferente dos outros locais que também estão sendo projetados.
O uso da aplicação capacita os usuários na tomada de decisões em várias situações encontradas no cotidiano e em outras experiências realizadas pelos mesmos. Em viagens, por exemplo, a aplicação facilita a localização de restaurantes, hotéis, e locais onde pode fazer a manutenção do seu veículo, em caso de dano do mesmo.